
#pragma once

#include "GameStd.h"
#include <OgreVector3.h>

class StationaryObject : public IObject
{
public:
	StationaryObject();
	~StationaryObject();

	//Inherited from IGameManager
	void Initialize();
	void UpdateStarted(const Ogre::FrameEvent& gameTime);
	void UpdateEnded(const Ogre::FrameEvent& gameTime);
	void Cleanup();

	//Inherited from IObject
	void Draw();
	bool HandleMessage(int message);
	Ogre::Vector3 GetPosition();
	void SetPostion(Ogre::Vector3 pos);
	double GetBRadius();
	void SetBRadius(double r);
	int GetID();
	void SetID(int id);
	bool IsTagged();
	void Tag();
	void UnTag();
	Ogre::Vector3 GetScale();
	void SetScale(Ogre::Vector3 nScale);
	void SetScale(double nScale);
	ObjectType GetObjectType();
	void SetObjectType(ObjectType nType);
	void Write(std::ostream& os);
	void Read(std::istream& is);
	double TimeElapsed();
	void SetName(Ogre::String nName);
	Ogre::String GetName();

private:
	int m_ID;					//Unique, assigned by ObjectManager

	ObjectType m_ObjectType;	//A Auto object is designated by 
								//Autonomous, of the ObjectType enum
								//in IObject
	bool m_Tag;					

	Ogre::Vector3 m_Pos;		//Indicates current position described by
								//a 3D vector

	Ogre::Vector3 m_Scale;		//Indicates the current scale described by
								//a 3D vector
	
	double m_BoundingRadius;

	double m_TimeElapsed;

	Ogre::String m_Name;
};